package com.sky.vo;
/**
 * 1.当前模块名：sky-pojo
 *   模块作用：存放视图对象(Value Object)，用于Controller层返回给前端的结构化数据
 * 2.当前包名：com.sky.vo
 *   包作用：封装Controller层返回的视图数据模型（Value Object）
 * 3.当前类名：DishVO
 *   类作用：菜品详情视图对象，包含菜品基本信息和关联的口味数据
 */
import com.sky.entity.DishFlavor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * DishVO：菜品详情视图对象
 * 知识点说明：
 * 1. 聚合视图设计：整合菜品基础信息+口味集合（减少前端请求次数）
 * 2. 分类冗余字段：存储categoryName避免前端额外查询分类表
 * 3. 时间格式化：LocalDateTime字段需前端格式化为易读形式
 * 4. 口味数据结构：使用List<DishFlavor>支持多口味展示
 * 5. 金融精度保障：BigDecimal类型确保价格计算准确
 * 6. 状态标识：使用Integer status控制菜品可见性
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DishVO implements Serializable {

    private Long id;
    //菜品名称
    private String name;
    //菜品分类id
    private Long categoryId;
    //菜品价格
    private BigDecimal price;
    //图片
    private String image;
    //描述信息
    private String description;
    //0 停售 1 起售
    private Integer status;
    //更新时间
    private LocalDateTime updateTime;
    //分类名称
    private String categoryName;
    //菜品关联的口味
    private List<DishFlavor> flavors = new ArrayList<>();

    //private Integer copies;
}
